home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Treccani Italiana Di Scienze Lettere Ed Arti
/
[Enciclopedia] Treccani Italiana di scienze lettere ed arti.iso
/
mac
/
data
/
menu_dvd.swf
/
scripts
/
__Packages
/
StringUtils.as
< prev
Wrap
Text File
|
2007-11-07
|
13KB
|
434 lines
class StringUtils
{
static var BACKSLASH = String.fromCharCode(92);
static var APICE = String.fromCharCode(39);
static var DOPPIOAPICE = String.fromCharCode(34);
static var TABSPACE = " ";
static var IMAGE_URL = "";
static var USE_SUB_SUP_FONT = false;
static var mImageCounter = 0;
function StringUtils()
{
}
static function addSlashes(string)
{
var outStr = "";
var i = 0;
while(i < string.length)
{
if(string.charAt(i) == StringUtils.BACKSLASH)
{
outStr += StringUtils.BACKSLASH + StringUtils.BACKSLASH;
}
else if(string.charAt(i) == StringUtils.APICE)
{
outStr += StringUtils.BACKSLASH + StringUtils.APICE;
}
else if(string.charAt(i) == StringUtils.DOPPIOAPICE)
{
outStr += StringUtils.BACKSLASH + StringUtils.DOPPIOAPICE;
}
else
{
outStr += string.charAt(i);
}
i++;
}
return outStr;
}
static function stripTrailingSpaces(string)
{
string = string;
string = StringUtils.replace(string,"\r","");
string = StringUtils.replace(string,"\n","");
string = StringUtils.replace(string,"\t","");
string = StringUtils.trim(string);
return string;
}
static function replace(s, arg_search, arg_replace)
{
StringUtils.string = s;
var arg_search;
var arg_replace;
var position;
var endText = "";
var preText = "";
var newText = "";
if(arg_search.length == 1)
{
return StringUtils.string.split(arg_search).join(arg_replace);
}
position = StringUtils.string.indexOf(arg_search);
if(position == -1)
{
return StringUtils.string;
}
endText = StringUtils.string;
do
{
position = endText.indexOf(arg_search);
preText = endText.substring(0,position);
endText = endText.substring(position + arg_search.length);
newText += preText + arg_replace;
}
while(endText.indexOf(arg_search) != -1);
newText += endText;
return newText;
}
static function trim(s)
{
StringUtils.string = s;
var j;
var strlen;
var k;
strlen = StringUtils.string.length;
j = 0;
while(StringUtils.string.charAt(j) == " ")
{
j++;
}
if(j)
{
StringUtils.string = StringUtils.string.substr(j + 1,strlen);
if(j == strlen)
{
return StringUtils.string;
}
}
var k = StringUtils.string.length - 1;
while(StringUtils.string.charAt(k) == " ")
{
k--;
}
StringUtils.string = StringUtils.string.substr(1,k + 1);
return StringUtils.string;
}
static function trimWhiteAndCr(s)
{
StringUtils.string = s;
var j;
var strlen;
var k;
strlen = StringUtils.string.length;
j = 0;
while(StringUtils.string.charAt(j) == " " || StringUtils.string.charCodeAt(j) == 13 || StringUtils.string.charCodeAt(j) == 10)
{
j++;
}
if(j)
{
StringUtils.string = StringUtils.string.substr(j + 1,strlen);
if(j == strlen)
{
return StringUtils.string;
}
}
var k = StringUtils.string.length - 1;
while(StringUtils.string.charAt(k) == " " || StringUtils.string.charCodeAt(j) == 13 || StringUtils.string.charCodeAt(j) == 10)
{
k--;
}
StringUtils.string = StringUtils.string.substr(1,k + 1);
return StringUtils.string;
}
static function formatUrl(url)
{
if(url.indexOf("ftp://") != -1 || url.indexOf("news://") != -1 || url.indexOf("https://") != -1)
{
return url;
}
if(url.indexOf("http://") == -1 && url.indexOf("www") == -1)
{
return "http://www." + url;
}
if(url.indexOf("http://") != -1 && url.indexOf("www") == -1)
{
return StringUtils.replace(url,"http://","http://www.");
}
if(url.indexOf("http://") == -1)
{
return "http://" + url;
}
}
static function HtmlFunction(inLabel)
{
var outV = inLabel;
StringUtils.mImageCounter = 0;
var haveSup = outV.indexOf("<sup>") >= 0;
var haveSub = outV.indexOf("<sub>") >= 0;
var haveImg = outV.indexOf("<img ") >= 0;
if(haveSup || haveSub || haveImg)
{
outV = StringUtils.subSupImgFromHTML(outV,haveSup,haveSub,haveImg);
if(haveSup && outV.indexOf("#A|") >= 0)
{
outV = outV.split("#A|").join("<span class=\"s_Superscript\">");
outV = outV.split("|A#").join("</span>");
}
if(haveSub && outV.indexOf("#P|") >= 0)
{
outV = outV.split("#P|").join("<span class=\"s_Subscript\">");
outV = outV.split("|P#").join("</span>");
}
}
if(StringUtils.USE_SUB_SUP_FONT)
{
outV = outV.split("<b>").join("<span class=\"s_Bold\">");
outV = outV.split("</b>").join("</span>");
}
return outV;
}
static function subSupImgFromHTML(origHTML, haveSup, haveSub, haveImg)
{
var xmlString = new XML();
var outV;
xmlString.parseXML(origHTML);
if(haveSup || haveSub)
{
StringUtils.switchChars(xmlString);
}
if(StringUtils.IMAGE_URL.length > 0 && haveImg)
{
StringUtils.handleEmbeddedImage(xmlString);
}
outV = xmlString.toString();
return outV;
}
static function subSupFromHTML(origHTML)
{
var xmlString = new XML();
var outV = "";
xmlString.parseXML(origHTML);
StringUtils.switchChars(xmlString);
outV = xmlString.toString();
if(outV.indexOf("#A|") >= 0)
{
outV = outV.split("#A|").join("<span class=\"s_Superscript\">");
outV = outV.split("|A#").join("</span>");
}
if(outV.indexOf("#P|") >= 0)
{
outV = outV.split("#P|").join("<span class=\"s_Subscript\">");
outV = outV.split("|P#").join("</span>");
}
if(StringUtils.USE_SUB_SUP_FONT)
{
outV = outV.split("<b>").join("<span class=\"s_Bold\">");
outV = outV.split("</b>").join("</span>");
}
return outV;
}
static function handleEmbeddedImage(node)
{
if(node.nodeName != null)
{
if(node.nodeName == "img")
{
StringUtils.mImageCounter++;
var sourceData = node.attributes.src;
var sourceDataArray = sourceData.split("#");
node.attributes.src = StringUtils.IMAGE_URL + sourceDataArray[0];
node.attributes.width = parseInt(sourceDataArray[1]);
node.attributes.height = parseInt(sourceDataArray[2]);
}
}
var child = node.firstChild;
while(child != null)
{
StringUtils.handleEmbeddedImage(child);
child = child.nextSibling;
}
}
static function switchChars(node)
{
var curChar = "";
if(node.nodeName != null)
{
if(node.nodeName == "sup")
{
var nText = "";
if(StringUtils.USE_SUB_SUP_FONT)
{
nText = "#A|" + node.firstChild.nodeValue + "|A#";
}
else
{
var supStringLen = node.firstChild.nodeValue.length;
var supString = node.firstChild.nodeValue;
var i = 0;
while(i < supStringLen)
{
curChar = supString.charAt(i);
switch(curChar)
{
case "0":
nText += "⁰";
break;
case "1":
nText += "┬╣";
break;
case "2":
nText += "┬▓";
break;
case "3":
nText += "┬│";
break;
case "4":
nText += "⁴";
break;
case "5":
nText += "⁵";
break;
case "6":
nText += "⁶";
break;
case "7":
nText += "⁷";
break;
case "8":
nText += "⁸";
break;
case "9":
nText += "⁹";
break;
case "+":
nText += "⁺";
break;
case "=":
nText += "⁼";
break;
case "(":
nText += "⁽";
break;
case ")":
nText += "⁾";
break;
case "n":
nText += "ⁿ";
break;
case "-":
case String.fromCharCode(8722):
nText += "⁻";
break;
default:
nText += "#A|" + curChar + "|A#";
break;
}
i++;
}
}
node.firstChild.nodeValue = nText;
}
else if(node.nodeName == "sub")
{
var nText = "";
if(StringUtils.USE_SUB_SUP_FONT)
{
nText = "#P|" + node.firstChild.nodeValue + "|P#";
}
else
{
var subStringLen = node.firstChild.nodeValue.length;
var subString = node.firstChild.nodeValue;
var i = 0;
while(i < subStringLen)
{
curChar = subString.charAt(i);
switch(curChar)
{
case "0":
nText += "₀";
break;
case "1":
nText += "Γéü";
break;
case "2":
nText += "Γéé";
break;
case "3":
nText += "Γéâ";
break;
case "4":
nText += "Γéä";
break;
case "5":
nText += "Γéà";
break;
case "6":
nText += "Γéå";
break;
case "7":
nText += "Γéç";
break;
case "8":
nText += "Γéê";
break;
case "9":
nText += "Γéë";
break;
case "+":
nText += "Γéè";
break;
case "-":
nText += "Γéï";
break;
case "=":
nText += "Γéî";
break;
case "(":
nText += "Γéì";
break;
case ")":
nText += "₎";
break;
default:
nText += "#P|" + curChar + "|P#";
}
i++;
}
}
node.firstChild.nodeValue = nText;
}
}
var child = node.firstChild;
while(child != null)
{
StringUtils.switchChars(child);
child = child.nextSibling;
}
}
static function TabToSpace(inTabNumber)
{
var outV = "";
var i = 0;
while(i < inTabNumber)
{
outV += StringUtils.TABSPACE;
i++;
}
return outV;
}
static function HtmlToText(inHtml)
{
if(!_global.gHtmlRenderer)
{
_global.gHtmlRenderer = _root.createTextField("txt_globalhtmlRenderer",1,0,0,100,200);
_global.gHtmlRenderer.html = true;
_global.gHtmlRenderer._visible = false;
_global.gHtmlRenderer.multiline = true;
}
_global.gHtmlRenderer.htmlText = inHtml;
return _global.gHtmlRenderer.text;
}
static function StripExt(inFilename)
{
var dotPos = inFilename.lastIndexOf(".");
if(dotPos >= 0)
{
return inFilename.substring(0,dotPos);
}
return inFilename;
}
}